#ifndef SSHCREATEGUIDE_H
#define SSHCREATEGUIDE_H

#include <QDialog>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlTableModel>
#include <QItemSelectionModel>

#include "sshconsole.h"

namespace Ui {
class SshCreateGuide;
}

// TODO:
// 1、可以配合sql去建立一个保存ssh的数据库文件，然后通过数据库拿去并存取到tabelView里面显示 √
// 2、刚好可以复习一遍 <data - model - delegate - view> 模式 √
// 3、顺便学习一下基础的sql表达式 √

/*
    继承了 QDialog GUI类
    整体功能:
        实现了引导创建sshConsole的引导功能
    具体功能：
        1、使用QSql相关库(QSqlDatabase、QSqlTableModel)实现数据库的创建、连接和操作
        2、使用<data - model - delegate - view> 模式，通过 QTableView 实现数据库表格的显示
        3、创建、保存、执行、清除相关功能
*/

class SshCreateGuide : public QDialog
{
    Q_OBJECT

public:
    explicit SshCreateGuide(QWidget *parent = nullptr);
    ~SshCreateGuide();

signals:
    void RequestCreateSshConsole(SshConsole* sshConsole);

private:
    void CreateNewSshConsole(const Ssh::SshLoginKeys& loginKeys);
    void InitListView();
    void ConnectAll();

    Ui::SshCreateGuide *ui;
    // SQLITE数据库
    QSqlDatabase mDataBase = QSqlDatabase::addDatabase("QSQLITE");
    QSqlTableModel* mSqlTableModel {nullptr};
    QItemSelectionModel* mSelectionModel {nullptr};
    QSqlQuery mQuery {};
};

#endif // SSHCREATEGUIDE_H
